//Source file: D:\\aaa\\com\\ce\\pms\\renovation\\service\\IFlowManageService.java

package com.ce.pms.renovation.service;

import java.util.List;
import java.util.Set;

import com.ce.pms.renovation.vo.DepositAccountingApprovalVO;
import com.ce.pms.renovation.vo.RenovateApprovalVO;


public interface IFlowManageService
{

   /**
    * 提交申请
    * @param requisitionId - 装修申办的ID
    * @param firstApprovalIds - 一级审批人员的ID集合
    * @param secondApprovalId - 二级审批人员ID
    * @roseuid 493777970157
    */
   public void submitRenovateRequisition(Long requisitionId, Set<Long> firstApprovalIds, Long secondApprovalId,Long creator);

   /**
    * 一级审批
    * @param approvalVO
    * @roseuid 49377D790157
    */
   public void firstRenovateApproval(RenovateApprovalVO approvalVO);

   /**
    * 二级审批
    * @param approvalVO - 审批结果VO
    * @roseuid 493784A1032C
    */
   public void secondRenovateApproval(RenovateApprovalVO approvalVO);

   /**
    * 功能描述:对保证金核算结果进行审批<br>
    * @param depositAccountingAppVO
    * Create author:罗军林<br>
    * Create on:2009-1-2<br>
    * Edit author:<br>
    * Edit on:<br>
    * Why:<br>
    */
   public void approveDepositAccounting(DepositAccountingApprovalVO depositAccountingAppVO);

   /**
    * 提交保证金核算结果
    * @param depositAccountingId - 保证金核算结果ID
    * @param employeeId - 审批人ID
    * @roseuid 493CAC550000
    */
   public void submitDepositAccounting(Long depositAccountingId, Long employeeId, Long creator);

   /**
    * 根据装修申请ID获得所有一级审批的情况
    * @param renovateRequisitionId - 装修申请Id
    * @return List
    * @roseuid 493DD1150128
    */
   public List getFirstRenovateApprovals(Long renovateRequisitionId);


	/**
	 * 功能描述:查询指定装修申请的所有已经审核过的装修申请审批结果<br>
	 * @param requisitionId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-12-31<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
  public List<RenovateApprovalVO> getAllIsHandleRenovateApproval(Long requisitionId);

  /**
   * 功能描述:得到指定审批人的装修申请审批<br>
   * @param employeeId
   * @return<br>
   * Create author:罗军林<br>
   * Create on:2008-12-31<br>
   * Edit author:<br>
   * Edit on:<br>
   * Why:<br>
   */
  public RenovateApprovalVO getRenovateApproval(Long employeeId,Long requisitionId);

  /**
   * 功能描述:是否允许审批<br>
   * @param requistionId
   * @param abstractApprovalId
   * @return<br>
   * Create author:罗军林<br>
   * Create on:2009-1-5<br>
   * Edit author:<br>
   * Edit on:<br>
   * Why:<br>
   */
  public Boolean isAllowSubmitRenovateApproval(Long requistionId,Long abstractApprovalId);

	/**
	 * 功能描述:查询指定审批人、指定保证金核算结果ID审批记录<br>
	 * @param approvalId
	 * @param depositAccountId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2009-1-6<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public DepositAccountingApprovalVO getDepositAccountingApproval(Long approvalId,Long depositAccountId);

	/**
	 * 功能描述:是否允许对核算进行审批<br>
	 * 需要的字段有：审批人ID,核算记录ID，如果没有或者不满足条件将抛出异常
	 * @param depositAccountingAppVO
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2009-1-7<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public boolean isAllowApproveDepositAccounting(Long approvalId,Long depositAccountingId);

	/**
	 * 功能描述:取得指定核算记录的审批结果<br>
	 * @param depositAccountingId
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2009-1-7<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public DepositAccountingApprovalVO getApproveDepositAccountingBy(Long depositAccountingId);
}
